package com.ruoyi.module.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.ruoyi.module.domain.DictBookUser;

/**
 * 词典用户关联Mapper接口
 * 
 * @author ruoyi
 * @date 2025-10-27
 */
public interface DictBookUserMapper 
{
    /**
     * 查询词典的授权用户列表
     * 
     * @param bookId 词典ID
     * @return 词典用户关联列表
     */
    public List<DictBookUser> selectDictBookUserListByBookId(String bookId);

    /**
     * 查询用户的授权词典列表
     * 
     * @param userId 用户ID
     * @return 词典用户关联列表
     */
    public List<DictBookUser> selectDictBookUserListByUserId(Long userId);

    /**
     * 查询用户是否有词典权限
     * 
     * @param bookId 词典ID
     * @param userId 用户ID
     * @return 结果（1表示有权限，0表示无权限）
     */
    public int checkUserBookPermission(@Param("bookId") String bookId, @Param("userId") Long userId);

    /**
     * 新增词典用户关联
     * 
     * @param dictBookUser 词典用户关联
     * @return 结果
     */
    public int insertDictBookUser(DictBookUser dictBookUser);

    /**
     * 批量新增词典用户关联
     * 
     * @param bookId 词典ID
     * @param userIds 用户ID列表
     * @param createBy 创建者
     * @return 结果
     */
    public int batchInsertDictBookUser(@Param("bookId") String bookId, @Param("userIds") Long[] userIds, @Param("createBy") String createBy);

    /**
     * 批量新增词典用户关联列表
     * 
     * @param list 词典用户关联列表
     * @return 结果
     */
    public int batchInsertDictBookUserList(List<DictBookUser> list);

    /**
     * 删除词典用户关联
     * 
     * @param id 词典用户关联主键
     * @return 结果
     */
    public int deleteDictBookUserById(Long id);

    /**
     * 删除词典的所有用户关联
     * 
     * @param bookId 词典ID
     * @return 结果
     */
    public int deleteDictBookUserByBookId(String bookId);

    /**
     * 删除用户的所有词典关联
     * 
     * @param userId 用户ID
     * @return 结果
     */
    public int deleteDictBookUserByUserId(Long userId);

    /**
     * 删除词典的指定用户关联
     * 
     * @param bookId 词典ID
     * @param userIds 用户ID数组
     * @return 结果
     */
    public int deleteDictBookUserByBookIdAndUserIds(@Param("bookId") String bookId, @Param("userIds") Long[] userIds);
}

